package  models.common.entity;



import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Transient;

import play.db.jpa.Model;

import common.constants.ConfConst;
import common.constants.Constants;
import common.utils.Security;
/**
 * 商票额度表
 *@author xiaojun
 *@version 2017-4-14 下午2:14:06
 */
@Entity
public class t_commercial_paper_lines extends Model{
	/**
	 * 构造器
	 */
	public t_commercial_paper_lines(){};
	/**
	 * 构造器
	 */
	public t_commercial_paper_lines(long user_id,Date apply_time ,String bill_code,double bond_percent,long commer_paper_id,long creditor_right_id
			,double finacing_available_limit,double finacing_total_limit,int is_turned,int financing_type,long financing_type_id,int type,Date paper_expire_time){
		this.user_id=user_id;
		this.apply_time=apply_time;
		this.bill_code=bill_code;
		this.bond_percent=bond_percent;
		this.commer_paper_id=commer_paper_id;
		this.creditor_right_id=creditor_right_id;
		this.finacing_available_limit=finacing_available_limit;
		this.finacing_total_limit=finacing_total_limit;
		this.is_turned=is_turned;
		this.financing_type=financing_type;
		this.financing_type_id=financing_type_id;
		this.type=type;
		this.paper_expire_time=paper_expire_time;
	};
	/**质押票号*/
	public String bill_code;
	/**id*/
    //public long id;
	@Transient
	public String sign;
	public String getSign () {
		
		return Security.addSign(this.id, Constants.BID_ID_SIGN, ConfConst.ENCRYPTION_KEY_DES);
	}
	/**企业用户id*/
    public long user_id;

    /**债权债务的id（关联债权债务表：额度列表中用到债务人）*/
    public long creditor_right_id;

    /**商票id（引用商票）*/
    public long commer_paper_id;

    /**'融通总额度'*/
    public double finacing_total_limit;

    /**融通已用额度'*/
    public double finacing_used_limit;

    /**融通可用额度'*/
    public double finacing_available_limit;

    /**'商票状态 0审核中 1 已质押2 已撤回 3 未通过 4 已失效 5  已到期 6  已逾期 7 待签字 8 已签字 9 待关联 10 已关联,11已取消 12赎回中  13已赎回 14 待签收'*/
    public int comer_paper_status;

    /**商票类型 0 ecds商票   1 数字商票2 关联的ecds商票3标准产品'*/
    public int type;

    public PaperType getTypes() {
    	PaperType status = PaperType.getEnum(this.type);
		
		return status;
	}
    /**'冻结额度'*/
    public double freezing_limit;

    /**'自融额度（平台给用户的额度）'*/
    public double self_limit;

    /**'是否可以直融  0 不可以  1可以'*/
    public int allow_finacing;

    /**'保证金比例'*/
    public double bond_percent;

    /** '是否需要股东签字 0 不需要 1 需要'*/
    public  int is_shareholder_sign;
    /**原始票id（关联到商票信息）'*/
    public long oiginal_id;

    /**是否可以赎回 0 可以 1 不可以'*/
    public int is_allow_redeem;

    /**签字进度'*/
    public double process;
    /**转开额度*/
    public double listed_amount;
    /**商票是否可以转开 0  可以 1 不可以'*/
    public int is_allow_turn;

    /**'是否商票转开 0 不是  1 是'*/
    public int is_turned;
    
    /**申请时间*/
    public Date apply_time;
    /**商票到期时间*/
    public Date paper_expire_time;
    /**签字协议编号（合同编号/同步合同表pact_no）*/
    public String contract_id;
    
    /**原因说明*/
    public String reason;
    /**融通类型  0 ECDS商票融通 1数字商票融通，2 背书商票融通,3、关联额度*/
    public int financing_type;
    public FinancingType getFinancingType() {
    	FinancingType status = FinancingType.getEnum(this.financing_type);
		
		return status;
	}
    /**类型的ID 如果是数字商票或背书表id或、关联额度表id**/
    public long financing_type_id;
    /**解除质押时间*/
    public Date remove_pledge_time;
    /**查看协议地址*/
    @Transient
    public String url;
    public String getUrl(){
 	   return "";//FddClientBase.invokeViewContract(contract_id);
    }
    
    public PaperStatus getStatus() {
    	PaperStatus status = PaperStatus.getEnum(this.comer_paper_status);
		
		return status;
	}
	
    /**
   	 * 商票额度表的状态
   	 *
   	 * @description 
   	 *
   	 * @author xiaojun
   	 * @createDate 2017年4月15日
   	 */
   	public enum PaperStatus {
   		
   		/** 审核中 */
   		PREAUDITING(0, "审核中"),
   		
   		/** 已质押 */
   		 PLEDGE(1, "已质押"),
   		
   		/** 已撤回*/
   		 ACCOMPLISH(2, "已撤回"), 
   		
   		/** 未通过 */
   		 NOT_PASS(3, "未通过"),	
   		
   		/** 已失效*/
   		 LOSE_EFFICACY(4, "已失效"),
   		
   		/** 已到期 */
   		 EXPIRE(5, "已到期"),
   		
   		/** 已逾期 */
   		 OVERDUE(6,"已逾期"),
   		 
   		/** 待签字*/
   		 TO_SIGNATURE(7,"待签字"),
   		/** 已签字*/
   		 SIGNATURE(8,"已签字"),
   		/** 待关联*/
   		TO_RELEVANCE(9,"待关联"),
  		/** 已关联*/
  		RELEVANCE(10,"已关联"),
  		/** 已取消*/
  		CANCEL(11,"已取消"),
  		/** 赎回中*/
  		REDEMPTION_REQUESTS(12,"赎回中"),
  		/** 已赎回*/
  		REDEMPTION(13,"已赎回"),
  		/** 待签收*/
  		SIGN_FOR(14,"待签收"),
  		/**挂牌中*/
  		TO_HANGTAG (112,"挂牌中"),
  		/**未使用*/
  		HANGTAG (113,"已挂牌"),
  		;
   		
   		/** 状态 */
   		public int code;
   		
   		/** 描述 */
   		public String value;
   		private PaperStatus(int code, String value){
   			this.code = code;
   			this.value = value;
   		}
   		
   		public static PaperStatus getEnum(int code){
   			PaperStatus[] bidstatus = PaperStatus.values();
   			for(PaperStatus income:bidstatus){
   				if(income.code == code){
   					
   					return income;
   				}
   			}
   			
   			return null;
   		}
   	}
   	

    /**
   	 * 商票类型的状态
   	 *
   	 * @description 
   	 *
   	 * @author xiaojun
   	 * @createDate 2017年4月15日
   	 */
   	public enum PaperType {
   		
   		/** ESDS商票 */
   		ECDS_TICKET(0, "ECDS商票"),
   		
   		/** 数字商票 */
   		DIGITAL_TICKET(1, "数字商票"),
   		
   		/** 关联ECDS商票*/
   		 TO_ECDS_TICKET(2, "关联ECDS商票"),
   		/** 贴现商票*/
   		 TO_DISCOUNT_TICKET(3, "贴现商票"),
   		 
   		 ;
   		
   		/** 状态 */
   		public int code;
   		
   		/** 描述 */
   		public String value;
   		
   		   		
   		
   		
   		private PaperType(int code, String value){
   			this.code = code;
   			this.value = value;
   		}
   		
   		public static PaperType getEnum(int code){
   			PaperType[] bidstatus = PaperType.values();
   			for(PaperType income:bidstatus){
   				if(income.code == code){
   					
   					return income;
   				}
   			}
   			
   			return null;
   		}
   	}

    /**
   	 * 额度质押类型的状态
   	 * 融通类型  0 ECDS商票融通 1数字商票融通，2 背书商票融通,3、关联额度
   	 * @description 
   	 *
   	 * @author xiaojun
   	 * @createDate 2017年4月15日
   	 */
   	public enum FinancingType {
   		
   	    
   		/** ESDS商票 */
   		ECDS_TICKET(0, "ESDS商票融通"),
   		
   		/** 数字商票 */
   		DIGITAL_TICKET(1, "数字商票融通"),
   		/** 数字商票 */
   		ENDORSE_TICKET(2, "背书流转融通"),
   		/** 关联ECDS商票*/
   		 TO_ECDS_TICKET(3, "关联额度融通"),
   		 
   		 ;
   		
   		/** 状态 */
   		public int code;
   		
   		/** 描述 */
   		public String value;
   		
   		   		
   		
   		
   		private FinancingType(int code, String value){
   			this.code = code;
   			this.value = value;
   		}
   		
   		public static FinancingType getEnum(int code){
   			FinancingType[] bidstatus = FinancingType.values();
   			for(FinancingType income:bidstatus){
   				if(income.code == code){
   					
   					return income;
   				}
   			}
   			
   			return null;
   		}
   	}
}